Today, virtualization of computing resources has been gaining popularity because of increased operational flexibility. Broadly speaking, virtualization is emulation of physical hardware. A virtual machine, thus, refers to generally a software implementation of a machine that executes programming instructions to perform operations and tasks as if executed by a physical machine, such as a personal computer. One or more virtual machines may run on a single physical machine. A virtual machine may be a virtual host or a virtual guest. In some conventional systems, the virtual host and the virtual guests are all virtual machines running under the hypervisor, which is a virtualization controller running on the physical machine.
When a virtual machine is started, an appropriate operating system and software tools are installed on the virtual machine in order to allow the virtual machine to perform a particular class of operations. Different classes of operations may require different operating systems and/or tools. However, this process of starting a virtual machine may become burdensome and tedious in the context of software testing because frequently, multiple instances of virtual machines have to be started to test different versions of software. Furthermore, the virtual machines have to be manually set up and checked to ensure that they have the same computing environment. Such a manual process can be tedious and error-prone.